<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // constructor 单词意思 构造函数

    // 在哪里？每个原型对象里面都有个constructor属性（constructor 构造函数）
    // 作用：该属性指向该原型对象的构造函数，简单理解，就是指向我的爸爸，我是有爸爸的孩子

    // 使用场景：
    // 1.如果有多个对象的方法，我们可以给原型对象采取对象形式赋值
    // 2.但是这样就会覆盖构造函数原型对象原来的内容，这样修改后的原型对象constructor  就不再指向当前构造函数了
    // 3.此时，我们可以在修改后的原型对象中，添加一个constructor 指向原来的构造函数

    // constructor属性的作用是什么？  指向该原型对象的构造函数（指回创造我的构造函数）

    function Star() {
    }
    // const ldh = new Star()
    // console.log(Star.prototype)  // { constructor :f }
    // console.log(Star.prototype.constructor === Star)  // true

    // Star.prototype.sing = function () {
    //   console.log('唱歌')
    // }
    // Star.prototype.dance = function () {
    //   console.log('跳舞')
    // }  这样写如果很多方法，很麻烦

    console.log(Star.prototype)
    Star.prototype = {
      // 重新指回创造这个原型对象的 构造函数
      constructor: Star,
      sing: function () { console.log('唱歌') },
      dance: function () { console.log('跳舞') }
    }
    console.log(Star.prototype)
  </script>
</body>

</html>